Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider provider = new Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider();

using (Stream output = new FileStream(fileName, FileMode.OpenOrCreate))
{
	RadFixedDocument fixedDocument = provider.ExportToFixedDocument(this.document);
	int numpages = fixedDocument.Pages.Count;

	FieldCharacter[] numpagesFields = this.document.EnumerateChildrenOfType<FieldCharacter>().Where(f => f.FieldCharacterType == FieldCharacterType.Start && f.FieldInfo.GetCode().ToLowerInvariant().Contains("numpages")).ToArray();
	foreach (var fieldCharacter in numpagesFields)
	{
		Paragraph paragraph = fieldCharacter.FieldInfo.Start.Parent as Paragraph;
		int endIndex = paragraph.Inlines.IndexOf(fieldCharacter.FieldInfo.End);

		FieldCharacter separator = fieldCharacter.FieldInfo.Separator;
		if (separator != null)
		{
			int separatorIndex = paragraph.Inlines.IndexOf(separator);

			// remove any field result.
			if (separatorIndex + 1 < endIndex)
			{
				for (int i = separatorIndex + 1; i < endIndex; i++)
				{
					paragraph.Inlines.RemoveAt(i);
				}
			}
		}

		Run numpagesRun = new Run(this.document);
		numpagesRun.Text = numpages.ToString();

		// refreshing the end index.
		endIndex = paragraph.Inlines.IndexOf(fieldCharacter.FieldInfo.End);

		// insert the correct numpages value.
		paragraph.Inlines.Insert(endIndex, numpagesRun);
	}

	provider.Export(this.document ?? this.CreateHelloDocument(), output);
}